package com.util;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 徐洲
 * @version 1.0
 */
public class Pagination<T> {
    public Pagination(){};
    private String strPage = null; // page参数变量
    private int curPages;// page参数内部的值
    private int m_rows; // 设置每页显示的页数
    private int pages;// 总页数

    // 取得page参数的值赋给变量strPage
    public String strPage(HttpServletRequest request, String page) {
        try {
            strPage = request.getParameter(page);// request对象取得page的值
        } catch (Exception e) {
            System.out.println("delcolumn" + e.getMessage());
        }
        return strPage;// 返回这个值。
    } // 页面数

    public int curPages(String strPage) {
        try {
            if (strPage == null) {// 默认没有就设置是第一页
                curPages = 1;
            } else {
                curPages = Integer.parseInt(strPage);// 取得strPage的整数值
                if (curPages < 1)// 如果小于1,同样返回是第一页
                    curPages = 1;
            }
        } catch (Exception e) {
            System.out.print("curPages");
        }
        return curPages;// 返回页面数
    }

    // 设置每页要显示的记录数
    public void setRows(int rows) {
        m_rows = rows;
    }

    // 取得页数
    public int getPages(int rowcounts) {
        int test;// 变量
        test = rowcounts % m_rows;// 取得余数
        if (test == 0)
            pages = rowcounts / m_rows;// 每页显示的整数
        else
            pages = rowcounts / m_rows + 1;// 不是的话就加一
        return pages;// 返回页数
    }
    // 结果集的返回
    public ArrayList<T> getPageSet(List<T> rs, int curPages) {//对list对象进行分页处理
        ArrayList<T> result = new ArrayList<>();
        try {
            for(int i=(curPages - 1) * m_rows;i<curPages*m_rows&&i<rs.size();i++){
                //(curPages - 1) * m_rows是第几页的第一条数据行号
                //curPages*m_rows是第几页最后一条的行号
                //i<rs.size()是防止数组越界
                result.add(rs.get(i));
            }
        } catch (Exception e) {
            System.out.print(e.getMessage());
        }
        return result;
    }
}
